package com.settlement.system.common.enums;


import org.apache.commons.lang3.StringUtils;

/**
 * RR-费用分摊
 * @author author
 */
public enum CostAllocationEnum {

    /**
     * 空的构造方法
     */
    CostAllocationEnum() {

    };



    /**
     * RR-凭证类型 是否分摊
     * @author author
     */
    public enum ShareOrNotEnum {
        /**
         * 需要
         */
        YES("是","1"),
        /**
         * 不需要
         */
        NO("否","0");


        private String name;

        private String no;

        ShareOrNotEnum(String name, String no) {
            this.name = name;
            this.no = no;
        }

        public String getName() {
            return name;
        }

        public String getNo() {
            return no;
        }


        /**
         * 根据名称获取编码
         * @param name
         * @return
         */
        public static String getNoByName(String name) {
            if(StringUtils.isEmpty(name)){
                return null;
            }
            ShareOrNotEnum[] enums = ShareOrNotEnum.values();
            for (int index = 0; index < enums.length; index++) {
                if(enums[index].getName().equals(name)){
                    return enums[index].getNo();
                }
            }
            return " ";
        }

        /**
         * 根据编码获取名称
         * @param no
         * @return
         */
        public static String getNameByNo(String no) {
            ShareOrNotEnum[] enums = values();
            for (int index = 0; index < enums.length; index++) {
                if (enums[index].getNo().equals(no)) {
                    return enums[index].getName();
                }
            }
            return null;
        }

    }

    /**
     * RR-统一账单汇总 分摊状态
     * @author author
     */
    public enum ShareStatusEnum {
        /**
         * 无需分摊
         */
        T0("无需分摊","0"),
        /**
         * 未分摊
         */
        T1("未分摊","1"),
        /**
         * 分摊中
         */
        T2("分摊中","2"),
        /**
         * 已分摊
         */
        T3("已分摊","3"),
        /**
         * 分摊失败
         */
        T4("分摊失败","4");


        private String name;

        private String no;

        ShareStatusEnum(String name, String no) {
            this.name = name;
            this.no = no;
        }

        public String getName() {
            return name;
        }

        public String getNo() {
            return no;
        }


        /**
         * 根据名称获取编码
         * @param name
         * @return
         */
        public static String getNoByName(String name) {
            ShareStatusEnum[] enums = ShareStatusEnum.values();
            for (int index = 0; index < enums.length; index++) {
                if(enums[index].getName().equals(name)){
                    return enums[index].getNo();
                }
            }
            return name;
        }

        /**
         * 根据编码获取名称
         * @param no
         * @return
         */
        public static String getNameByNo(String no) {
            ShareStatusEnum[] enums = values();
            for (int index = 0; index < enums.length; index++) {
                if (enums[index].getNo().equals(no)) {
                    return enums[index].getName();
                }
            }
            return null;
        }

    }

    /**
     * RR-统一账单汇总 分摊失败原因
     * @author author
     */
    public enum ShareFailReasonEnum {
        /**
         * 分摊权数不存在
         */
        T1("分摊权数不存在","1"),
        /**
         * 查询不到该票后的供应商档案
         */
        T2("查询不到该票后的供应商档案","2");


        private String name;

        private String no;

        ShareFailReasonEnum(String name, String no) {
            this.name = name;
            this.no = no;
        }

        public String getName() {
            return name;
        }

        public String getNo() {
            return no;
        }


        /**
         * 根据名称获取编码
         * @param name
         * @return
         */
        public static String getNoByName(String name) {
            ShareFailReasonEnum[] enums = ShareFailReasonEnum.values();
            for (int index = 0; index < enums.length; index++) {
                if(enums[index].getName().equals(name)){
                    return enums[index].getNo();
                }
            }
            return name;
        }

        /**
         * 根据编码获取名称
         * @param no
         * @return
         */
        public static String getNameByNo(String no) {
            ShareFailReasonEnum[] enums = values();
            for (int index = 0; index < enums.length; index++) {
                if (enums[index].getNo().equals(no)) {
                    return enums[index].getName();
                }
            }
            return null;
        }

    }

    /**
     * RR-凭证类型 票前票后
     * @author author
     */
    public enum BeforeOrAfterTicketEnum {
        /**
         * 票前
         */
        BEFORE("票前","1"),
        /**
         * 票后
         */
        AFTER("票后","2"),
        /**
         * 不涉及
         */
        NOT_INVOLVE("不涉及","3");


        private String name;

        private String no;

        BeforeOrAfterTicketEnum(String name, String no) {
            this.name = name;
            this.no = no;
        }

        public String getName() {
            return name;
        }

        public String getNo() {
            return no;
        }


        /**
         * 根据名称获取编码
         * @param name
         * @return
         */
        public static String getNoByName(String name) {
            if(StringUtils.isEmpty(name)){
                return null;
            }
            BeforeOrAfterTicketEnum[] enums = BeforeOrAfterTicketEnum.values();
            for (int index = 0; index < enums.length; index++) {
                if(enums[index].getName().equals(name)){
                    return enums[index].getNo();
                }
            }
            return " ";
        }

        /**
         * 根据编码获取名称
         * @param no
         * @return
         */
        public static String getNameByNo(String no) {
            BeforeOrAfterTicketEnum[] enums = values();
            for (int index = 0; index < enums.length; index++) {
                if (enums[index].getNo().equals(no)) {
                    return enums[index].getName();
                }
            }
            return null;
        }

    }

    /**
     * RR-记账项目 账单大类
     * @author author
     */
    public enum BillCategoryEnum {
        /**
         * 平台账单
         */
        T1("平台账单","1"),
        /**
         * 营销工具
         */
        T2("营销工具","2"),
        /**
         * 手工调账
         */
        T3("手工调账","3");


        private String name;

        private String no;

        BillCategoryEnum(String name, String no) {
            this.name = name;
            this.no = no;
        }

        public String getName() {
            return name;
        }

        public String getNo() {
            return no;
        }


        /**
         * 根据名称获取编码
         * @param name
         * @return
         */
        public static String getNoByName(String name) {
            if(StringUtils.isEmpty(name)){
                return null;
            }
            BillCategoryEnum[] enums = BillCategoryEnum.values();
            for (int index = 0; index < enums.length; index++) {
                if(enums[index].getName().equals(name)){
                    return enums[index].getNo();
                }
            }
            return " ";
        }

        /**
         * 根据编码获取名称
         * @param no
         * @return
         */
        public static String getNameByNo(String no) {
            BillCategoryEnum[] enums = values();
            for (int index = 0; index < enums.length; index++) {
                if (enums[index].getNo().equals(no)) {
                    return enums[index].getName();
                }
            }
            return null;
        }

    }

    /**
     * 费用分摊-推送FAS状态
     */
    public enum PushFasStatusEnum {
        /**
         * 无需推送
         */
        T0_NOT_NEED_PUSHING("0","无需推送"),
        /**
         * 未推送
         */
        T1_NOT_PUSHED("1","未推送"),
        /**
         * 推送中
         */
        T2_PUSHING("2","推送中"),
        /**
         * 推送完成
         */
        T3_PUSH_COMPLETED("3","推送完成"),
        /**
         * 推送失败
         */
        T4_PUSH_FAILED("4","推送失败"),
        /**
         * 推送失败
         */
        T5_DELETING("5","删除中");

        private String no;

        private String name;


        PushFasStatusEnum(String no, String name) {
            this.no = no;
            this.name = name;
        }

        public String getName() {
            return name;
        }

        public String getNo() {
            return no;
        }


        /**
         * 根据名称获取编码
         * @param name
         * @return
         */
        public static String getNoByName(String name) {
            if(StringUtils.isEmpty(name)){
                return null;
            }
            PushFasStatusEnum[] enums = PushFasStatusEnum.values();
            for (int index = 0; index < enums.length; index++) {
                if(enums[index].getName().equals(name)){
                    return enums[index].getNo();
                }
            }
            return " ";
        }

        /**
         * 根据编码获取名称
         * @param no
         * @return
         */
        public static String getNameByNo(String no) {
            PushFasStatusEnum[] enums = values();
            for (int index = 0; index < enums.length; index++) {
                if (enums[index].getNo().equals(no)) {
                    return enums[index].getName();
                }
            }
            return null;
        }

    }

    /**
     * 费用分摊-数据来源
     */
    public enum SourceTypeEnum {
        /**
         * 无需推送
         */
        T0_SYS("0","系统生成"),
        /**
         * 未推送
         */
        T1_ADJUST("1","导入调整"),
        /**
         * 推送中
         */
        T2_MANUAL("2","手工导入");

        private String no;

        private String name;


        SourceTypeEnum(String no, String name) {
            this.no = no;
            this.name = name;
        }

        public String getName() {
            return name;
        }

        public String getNo() {
            return no;
        }


        /**
         * 根据名称获取编码
         * @param name
         * @return
         */
        public static String getNoByName(String name) {
            if(StringUtils.isEmpty(name)){
                return null;
            }
            SourceTypeEnum[] enums = SourceTypeEnum.values();
            for (int index = 0; index < enums.length; index++) {
                if(enums[index].getName().equals(name)){
                    return enums[index].getNo();
                }
            }
            return " ";
        }

        /**
         * 根据编码获取名称
         * @param no
         * @return
         */
        public static String getNameByNo(String no) {
            SourceTypeEnum[] enums = values();
            for (int index = 0; index < enums.length; index++) {
                if (enums[index].getNo().equals(no)) {
                    return enums[index].getName();
                }
            }
            return null;
        }

    }


}
